/// **
// *
// */
// package com.yueny.rapid.lang.thread.factory;
//
// import java.security.AccessControlContext;
// import java.security.AccessController;
// import java.util.Map;
//
// import org.slf4j.MDC;
//
// import sun.security.util.SecurityConstants;
//
/// **
// * @author yueny09 <yueny09@163.com>
// *
// * @DATE 2017年4月19日 上午8:40:12
// *
// */
// public class MdcThreadFactory extends NamedThreadFactory {
// private final AccessControlContext acc;
// private final ClassLoader ccl;
//
// public MdcThreadFactory() {
// this("pool-" + getPOOL_SEQ().getAndIncrement());
// }
//
// public MdcThreadFactory(final String prefix) {
// this(prefix, false);
// }
//
// public MdcThreadFactory(final String prefix, final boolean daemo) {
// super(prefix, daemo);
//
// final SecurityManager sm = System.getSecurityManager();
// if (sm != null) {
// // Calls to getContextClassLoader from this class
// // never trigger a security check, but we check
// // whether our callers have this permission anyways.
// sm.checkPermission(SecurityConstants.GET_CLASSLOADER_PERMISSION);
//
// // Fail fast
// sm.checkPermission(new RuntimePermission("setContextClassLoader"));
// }
// this.acc = AccessController.getContext();
// this.ccl = Thread.currentThread().getContextClassLoader();
// }
//
// @Override
// public Thread newThread(final Runnable runnable) {
// final Map previous = MDC.getCopyOfContextMap();
//
// return super.newThread(new Runnable() {
// @Override
// public void run() {
// MDC.setContextMap(previous);
//
// try {
// runnable.run();
// } finally {
// if (previous == null) {
// MDC.clear();
// } else {
// MDC.setContextMap(previous);
// }
// }
// }
// });
//
// }
//
// }
